#include "inscription.h"
#include "ui_inscription.h"

Inscription::Inscription(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Inscription)
{
    ui->setupUi(this);
    ui->textEdit->setEnabled(false);
}

Inscription::~Inscription()
{
    delete ui;
}

void Inscription::on_comboBox_2_activated(int index)
{
    static QString lastText("");

    if (index > 1)
    {
        ui->textEdit->setEnabled(true);
        ui->textEdit->setText(lastText);
    }
    else
    {
        lastText = ui->textEdit->toPlainText();
        ui->textEdit->setText("");
        ui->textEdit->setEnabled(false);
    }
}

bool Inscription::check_champ()
{
    if (ui->lineEdit->text().size() == 0)
        return (false);
    if (ui->lineEdit_2->text().size() == 0)
        return (false);
    if (ui->lineEdit_3->text().size() == 0)
        return (false);
    if (ui->lineEdit_4->text().size() == 0)
        return (false);
    if (ui->lineEdit_5->text().size() == 0)
        return (false);
    if (ui->lineEdit_6->text().size() == 0)
        return (false);
    if (ui->lineEdit_7->text().size() == 0)
        return (false);
    if (ui->lineEdit_8->text().size() == 0)
        return (false);
    if (ui->lineEdit_9->text().size() == 0)
        return (false);
    return (true);
}

bool Inscription::check_password()
{
    bool contain_number(false);
    bool contain_maj(false);
    bool contain_min(false);

    if (ui->lineEdit_2->text != ui->lineEdit_4->text)
        return (false);
    for (int i = 0; i < ui->lineEdit_2->text().size(); i++)
    {
        if (ui->lineEdit_2->text()[i].isNumber())
            contain_number = true;
        if (ui->lineEdit_2->text()[i].isLower())
            contain_min = true;
        if (ui->lineEdit_2->text()[i].isUpper())
            contain_maj = true;
    }
    return (contain_number && contain_min && contain_maj);
}

bool Inscription::check_doublon(const QString champ, const QString value)
{
    QSqlQuery requete;
    requete.exec("SELECT * FROM user");
    while (requete.next())
        if (requete.value(champ).toString() == value)
            return (false);
    return (true);
}

void Inscription::on_pushButton_clicked()
{
    QSqlDatabase sqldb = QSqlDatabase::addDatabase("QMYSQL");
    sqldb.setHostName("localhost");
    sqldb.setDatabaseName("uselessdb");
    sqldb.setUserName("root");
    sqldb.setPassword("");

    if (!sqldb.open())
    {
        QMessageBox::critical(this, "Error connection", "Unable to connect to SQL Server.");
        return ;
    }
    if (!check_champ() || !check_password() || !check_doublon("pseudo", ui->lineEdit->text())
             || !check_doublon("pseudo_visible", ui->lineEdit_3->text()) || !check_doublon("mail", ui->lineEdit_9->text()))
    {
        QMessageBox::warning(this, "Erreur dans le formulaire", "Unde erreur dans le formulaire à été détecté.\nMerci de bien vérifier tout vos valeurs.\n" +
                             "Les mots de passe se doit de contenir au moin 1 lettre minuscule, 1 lettre majuscule et 1 nombre avec au moin 6 caractères.");
        ui->lineEdit_2->setText("");
        ui->lineEdit_4->setText("");
        return ;
    }

}
